package com.jf.concurrent.lock;

import java.util.concurrent.locks.LockSupport;

import static java.lang.System.out;

/**
 * LockSupport 特性
 * 完全不依赖锁
 * 不需要管唤醒顺序，可在 park之前直接 unpark
 * 可以多次唤醒，因为信号量 只有1，多次并不会累加
 * 但若多次进入等待，则需要对应次数的唤醒
 *
 * @author Junfeng
 */
public class LockSupportDemo {
    public static void main(String[] arg) {

        Thread a = new Thread(() -> {
            out.println(Thread.currentThread().getName() + " 进入等待");
            LockSupport.park();
            out.println(Thread.currentThread().getName() + " 被唤醒");
        }, "AA");
        a.start();

        Thread b = new Thread(() -> {
            LockSupport.unpark(a);
            LockSupport.unpark(a);
            out.println(Thread.currentThread().getName() + " 唤醒AA");
        }, "BB");
        b.start();

    }
}
